【补丁使用】
该补丁将修改同目录下的Sango2.exe。请将补丁放在Sango2.exe同一目录下，并运行补丁。
修改有风险，请注意备份。
目前，所有带文字提示的补丁，均以 英文 / GBK简体 / Big5繁体 的格式进行说明。

【作用说明】
原版存在一些INI设置了的血缘武将，但因为INI读取时的BUG，导致这些血缘武将的设置无效。例如，曹丕的血缘武将是曹操，但由于曹操的Sequence在曹丕之后，导致原版游戏中曹丕的血缘武将没有被读取，曹丕未被正确设置为曹操的儿子，也就不会在内政时被曹操带出。
该补丁修复了INI读取血缘武将的BUG，使得无论血缘武将的Sequence在什么位置，都会被正确读取。
因此，使用该补丁后，原版未被正确读取的血缘将会被修复，曹操将可以正确带出曹丕，马腾将可以正确带出马超，以此类推。
该补丁原先为本体的一部分。由于该修改改变了原版游戏的实际内容，在一些朋友的建议下，该补丁被移入附加内容。

完整代码见图片说明（在“_附录：修改方法的图片说明”文件夹中）。

【说明】
目标函数42D1A3(LoadAllGeneral).

原因倒是众所周知：在读取第i号武将的时候，血缘是立即从当前武将列表中查找的，此时这个列表只包括i之前的武将。如果血缘武将还在ini的后面，就不会被读取到。

解决方案，原则上是在读完所有武将后再遍历一遍所有武将，来查找血缘武将并赋值。因此需要在主循环结束时候新增一个新的循环。

一个额外的问题是，必须先把读到的血缘武将字符串找个地方存起来；而武将结构体中是用指针存储的，一个字符串比一个指针长太多，肯定是放不下的。因此必须另想办法。原版武将结构体中，确实存在一些从来没用过的字段；不过，为了避免潜在的兼容性问题（防止一些人已经打上了这些字段的主意），还是重新找个地方存比较妥当。

最稳妥的方法无疑是使用malloc动态分配内存。在读取ini文件的主循环中，每次malloc一个12长度的字符串（原版武将姓名的长度，考虑\0要占一个字节，最大支持五个字），将该字符串的指针存进pGeneral->pBloodGeneral位置。在主循环结束之后的次循环中，再针对pBloodGeneral的值，到武将列表中查找血缘武将，同时把原字符串指针指向的空间free掉。

空间上，需要挤出一个循环的空间。不过这种大函数，空间挤一挤总是会有的。

一个特别注意的问题是，该修改和修复LoyalKing字段的读取正好处在同一个函数当中。为了保证两个补丁都能在任何版本下运行，在修改的过程中，特意关注了原来压入LOYAL字符串的压栈代码的位置不变。因此最后得到的代码中，是先读取了Blood属性，然后立即压入读取Loyal/LoyalKing的函数的参数，压入之后为了避免读取Blood时的返回值被复写，又先处理了读取Blood属性得到的返回值，然后再call函数读取Loyal/LoyalKing。在附带的图中可以看得很清楚，大段的红色中间有一段未修改的蓝色部分代码，那一段就是和LoyalKing有关的部分。

除此之外，因为主循环的代码长度被压缩，在函数的开头部分，一些跳转代码的目标地址也要做相应调整。

【UE快速修改】
如果您因一些原因无法或不愿意使用补丁程序，您也可以使用UltraEdit打开Sango2.EXE，直接按如下方法修改相应地址处的内容。

从: 
2C5C8: B9

2C5F2: 70

2C60A: 58

2C63E: 24 03

2C890: 83 C4 08 8B 4D FC 51 8B 95 68 FF FF FF 52 E8 5D FC FF FF 83 C4 08 8B 45 FC 50 8B 8D 68 FF FF FF 51 E8 04 FB FF FF 83 C4 08

2C8C7: 8B 85 68 FF FF FF 50 E8 8F 81 02 00 83 C4 10 89 45 F8 83 7D F8 FF 74 1A 8D 8D 74 FF FF FF 51 E8 06 BF FD FF 83 C4 04 8B 55 FC 89 82 BF 00 00 00 EB 0D 8B 45 FC C7 80 BF 00 00 00 00 00 00 00 8D 8D 74 FF FF FF 51 6A 01 68 5C C5 48 00 8B 95 68 FF FF FF 52 E8 42 81 02 00 83 C4 10 89 45 F8 83 7D F8 FF 74 1A 8D 85 74 FF FF FF 50 E8 D3 94 FD FF 83 C4 04 8B 4D FC 89 81 C3 00 00 00 EB 0D 8B 55 FC C7 82 C3 00 00 00 00 00 00 00 8B 45 FC 50 8B 8D 68 FF FF FF 51 E8 B9 F0 FF FF 83 C4 08 8B 95 68 FF FF FF 52 68 64 C5 48 00 E8 9B 80 02 00 83 C4 08 89 85 68 FF FF FF E9 3A FC FF FF


改为: 
2C5C8: 61

2C5F2: 18

2C60A: 00

2C63E: CC 02

2C890: E8 6B FC FF FF E8 20 FB FF FF 6A 12 E8 DF 1A 04 00 89 45 F8 59 59 5A 50 6A 01 68 5C C5 48 00 51 E8 AD 81 02 00 59 83 C4 0C

2C8C7: 51 83 F8 FF 75 06 8B 45 F8 C6 00 00 E8 8A 81 02 00 83 C4 0C 5A 31 C9 83 F8 FF 74 09 52 E8 08 BF FD FF 5A 89 C1 8B 45 FC 89 88 BF 00 00 00 8B 4D F8 89 88 C3 00 00 00 50 8B 95 68 FF FF FF 52 E8 11 F1 FF FF 83 C4 08 8B 95 68 FF FF FF 52 68 64 C5 48 00 E8 F3 80 02 00 83 C4 08 89 85 68 FF FF FF E9 92 FC FF FF A1 84 61 4A 00 89 45 FC 83 7D FC 00 74 2E 8B 55 FC 8B 8A C3 00 00 00 51 E8 C1 94 FD FF 8B 55 FC 89 82 C3 00 00 00 E8 D8 1A 04 00 83 C4 04 8B 55 FC 8B 8A F3 00 00 00 89 4D FC EB CC 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90